@火凤凰
2年前 提问
1个回答
优化Kafka防止数据泄露发方法有哪些
Andrew
2年前
优化Kafka防止数据泄露发方法有以下这些:
设计上保证数据的可靠安全性,依据分区数做好数据备份,设立副本数等。权衡安全性和速度性的要求,选择相应的同步推送还是异步推送方式,当发现数据有问题时,可以改为同步来查找问题。
flush是Kafka的内部机制,Kafka优先在内存中完成数据的交换,然后将数据持久化到磁盘。Kafka首先会把数据缓存(缓存到内存中)起来再批量flush。可以通过log.flush.interval.messages和log.flush.interval.ms来配置flush间隔。’
可以通过replica机制保证数据不丢,代价就是需要更多资源,尤其是磁盘资源,Kafka当前支持GZip和Snappy压缩,来缓解这个问题。是否使用replica(副本)取决于在可靠性和资源代价之间的balance(平衡)。
异步要考虑到partitionleader在未完成副本数follows的备份时就宕机的情况,即使选举出了新的leader但是已经push的数据因为未备份就丢失了。不能让内存的缓冲池太满,如果满了内存溢出,也就是说数据写入过快,Kafka的缓冲池数据落盘速度太慢,这时肯定会造成数据丢失。尽量保证生产者端数据一直处于线程阻塞状态,这样一边写内存一边落盘。
设置合适的方式,增大batch大小来减小网络IO和磁盘IO的请求,这是对于Kafka效率的思考。不过异步写入丢失数据的情况还是难以控制,还是得稳定整体集群架构的运行,特别是zookeeper,当然正对异步数据丢失的情况尽量保证broker端的稳定运作吧。